<?php

/**
* ClassName: Client_sohu
*
* 搜狐微博 客户端
*
* @author hejigui <hejigui@soften.cn>
*/
class Sohu_client{
    const METHOD_GET = 'GET';
	public $accesstoken = '';
	/**
	* API HTTP接口地址
	*
	* @var string
	*/
    private $apiUrlHttp = 'https://api.t.sohu.com/';

	public function __construct($config){
        $this->_ci = & get_instance();
        $this->_ci->config->load('openplatforms', TRUE);
        $openplatforms = $this->_ci->config->item('openplatforms');
        $this->_aip_config  = $openplatforms['openplatforms']['apisearch']['sohu'];

        $this->access_token = $config['token_info']['access_token'] ? $config['token_info']['access_token'] : null;
        $this->refresh_token = $config['token_info']['refresh_token'] ? $config['token_info']['refresh_token'] : null;
        $this->openid = $config['token_info']['openid'] ? $config['token_info']['openid'] : null;
        $this->client_id = $config['app_info']['appkey'] ? $config['app_info']['appkey'] : null;
        $this->client_secret  = $config['app_info']['appkey'] ? $config['app_info']['appkey'] : null;
	}


 	/**
    * 搜索文章，返回status数据集
    *
    * @access public
    * @param q	必选	查询关键字，返回此关键字的查询列表(需要urlencode，编码为utf-8)
    * @param since	可选	更新起始时间点，只获取since时间之后的更新，但是since必须是24小时内的某个时间，时间格式：1263206841584(距离1970-01-01 00:00:00到现在的毫秒数)
    * @param since_id可选	获取指定的文章id之后的更新，这是一个长整型变量。
    * @param page	可选	当前的页数
    * @param rpp	可选	每页条数，不大于20
    * @param callback可选	仅JSON方式支持，用于JSONP callback作用。
    * @return string $mixed
    */
    public function search($keyword,$page) {
        $command = $this->_aip_config['search'];
		$parameters['postData']['q'] = trim($keyword);
		$parameters['postData']['page'] = $page;
		$parameters['postData']['rpp'] = $this->_aip_config['rpp'];

        $parameters = $this->send_http($parameters);
        $parameters['url'] = $this->_aip_config['url'].trim($command, '/');
        $parameters['method'] = self::METHOD_GET;
    	return $parameters;
    }

    /**
    * friends_timeline
    *
    * @access public
    * @param int page			当前的页数(一旦传递了cursor值，page方式将会失效）
    * @param int count			每页条数，不大于20
    * @param string max_id		最大微博id，传递这个id之后，会返回比指定微博更早的微博。在传递了max_id之后，cursor和page都将不再起作用，它具有最高优先级。
    * @param string since		更新起始时间点，只获取since时间之后的更新，但是since必须是24小时内的某个时间，时间格式：Fri Mar 12 22:21:42 +0800 2010
    * @param string since_id	获取指定的文章id之后的更新，这是一个长整型变量。
    * @param string cursor		下一页的cursor_id(cursor分页方式，cursor分页方式，与page参数互斥)
    * @return string $mixed
    */
    public function friends_timeline($cursor = -1) {
		$command = 'statuses/friends_timeline.json';

		$parameters['cursor'] = $cursor;

    	return $this->send_http($command,$parameters);
    }

    /**
    *
    *获取用户的详细信息
    * @access public
    * @param int uid 用户id
    * @return string $mixed
    */
    public function show($uid) {
		$command = 'users/show/'.$uid.'.json';
    	return $this->send_http($command);
    }
    /**
    *
    *关注某用户
    * @access public
    * @param int uid 用户昵称
    * @return string $mixed
    */
    public function friendships_create($uid,$nick) {
		if (empty($uid)&&empty($nick)) {
			exit('uid or nick is null');
		}
		if($uid)
			$command = 'friendships/create/'.$uid.'.json';
        else
			$command = 'friendships/create/'.$nick.'.json';

    	return $this->send_http($command);
    }

    /**
    *
    *取消关注某用户
    * @access public
    * @param int uid 用户昵称
    * @return string $mixed
    */
    public function friendships_destroy($uid,$nick) {
		if (empty($uid)&&empty($nick)) {
			exit('uid or nick is null');
		}
		if($uid)
			$command = 'friendships/destroy/'.$uid.'.json';
        else
			$command = 'friendships/destroy/'.$nick.'.json';

    	return $this->send_http($command);
    }

	/**
	* 获取授权用户信息
	*
	* @return string
	*/
/*
	public function show_userinfo(){
		$api_name = '/users/show.json';
		return $this->send_http($api_name);
	}
*/
	/**
	* 搜索文章，返回status数据集，支持xml。
	*
	* @access public
	* @param string $keyword xxxxx [Must]
	* @return string $mixed
	*/
/*
	public function statuses_search($keyword) {
		$api_name = '/statuses/search.json';
		$keyword = urlencode($keyword);

		$param['q'] = $keyword;
		return $this->send_http($api_name,$param);
	}
*/
    /**
     * @param $params
     */
    public function send_http($params){
		$params['postData']['access_token'] = $this->access_token;
        return $params;
	}
}
// ClassName Oauth End